g_return_val_if_fail (self->in_transaction == TRUE, FALSE);
+ if ((self->test_error_flags & OSTREE_REPO_TEST_ERROR_PRE_COMMIT) > 0)
+ {
+ g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED,
+ "OSTREE_REPO_TEST_ERROR_PRE_COMMIT specified");
+ goto out;
+ }
+
if (syncfs (self->tmp_dir_fd) < 0)
{
glnx_set_error_from_errno (error);
#define _OSTREE_SUMMARY_CACHE_DIR "summaries"
#define _OSTREE_CACHE_DIR "cache"
+typedef enum {
+ OSTREE_REPO_TEST_ERROR_PRE_COMMIT = (1 << 0)
+} OstreeRepoTestErrorFlags;
+
/**
* OstreeRepo:
*
uid_t target_owner_uid;
gid_t target_owner_gid;
+ guint test_error_flags; /* OstreeRepoTestErrorFlags */
+
GKeyFile *config;
GHashTable *remotes;
GMutex remotes_lock;
{
static gsize gpgme_initialized;
GLnxLockFile empty_lockfile = GLNX_LOCK_FILE_INIT;
+ const GDebugKey test_error_keys[] = {
+ { "pre-commit", OSTREE_REPO_TEST_ERROR_PRE_COMMIT },
+ };
if (g_once_init_enter (&gpgme_initialized))
{
g_once_init_leave (&gpgme_initialized, 1);
}
+ self->test_error_flags = g_parse_debug_string (g_getenv ("OSTREE_REPO_TEST_ERROR"),
+ test_error_keys, G_N_ELEMENTS (test_error_keys));
+
g_mutex_init (&self->cache_lock);
g_mutex_init (&self->txn_stats_lock);
set -euo pipefail
-echo "1..53"
+echo "1..54"
$OSTREE checkout test2 checkout-test2
echo "ok checkout"
assert_has_dir repo2/uncompressed-objects-cache
echo "ok disable cache checkout"
+cd ${test_tmpdir}
+rm checkout-test2 -rf
+$OSTREE checkout test2 checkout-test2
+if env OSTREE_REPO_TEST_ERROR=pre-commit $OSTREE commit -b test2 -s '' $test_tmpdir/checkout-test2 2>err.txt; then
+ assert_not_reached "Should have hit OSTREE_REPO_TEST_ERROR_PRE_COMMIT"
+fi
+assert_file_has_content err.txt OSTREE_REPO_TEST_ERROR_PRE_COMMIT
+echo "ok test error pre commit"
+
# Whiteouts
cd ${test_tmpdir}
mkdir -p overlay/baz/